Tips und Tricks für die Programme Variokartei.GFA VK_PRT.GFA V3.02a und VK_PAR.GFA V3.0b ------------------------------------------------ Ändern können Sie das Programm natürlich nur, wenn Sie den Interpreter GFABASIC besitzen. Sie haben 4000 Datensätze und möchten die letzten 20/30 Datensätze auch noch eingeben. Weisen Sie der Variablen n& einen höheren Wert zu. Die Va- riable n& finden Sie am Programmanfang unter Init:, Zeile 47. Bei einer Fehlermeldung `out of memory' mÜssen Sie am Programmanfang mit RESERVE mehr Speicher anfordern. Der Speicherbedarf für das Indexfeld errechnet sich aus Stringlänge mal Anzahl Datensätze plus Verwaltungsbytes. Dazu kommt noch Speicherbedarf für den Programmtext plus der restlichen Variablen. Die maximale Länge eines Feldes ist 62 Zeichen. Also fangen wir an: Indexfeld Strings 4000 * 62 Bytes = 248000 Bytes Verwaltungsbytes (zwischen 5 und 10 Bytes pro String? Nehmen wir 5 Bytes je String 4000 * 5 Bytes = 20000 Bytes Feld für die Satznr. 4000 * 5 Bytes = 20000 Bytes (über Pi * Daumen) Für die restlichen Variablen 10000 Bytes (über Pi * Daumen) ----------------------------------------------------- Macht zusammen 298000 Bytes ===================================================== Wenn bei 4000 Datensätzen ein Feld mit 62 Zeichen als Indexfeld bestimmt wird, kann man den Speicherbedarf mit rund 300000 Bytes veranschlagen. Angefordert im Programm werden 350*1024 Bytes, das sind 358400 Bytes. Es bleiben 50256 Bytes frei. Wenn Sie nur ein Indexfeld bestimmen, das mit 30 Zeichen/Bytes nur halb so groß ist, können Sie die Anzahl der Datensätze locker auf 8000 erhöhen. Ohne mehr Speicher anzufordern. Und es geht doch. Wer den Interpreter GFABASIC nicht hat, kann mit einem Dateimonitor die Änderungen am Programmtext vornehmen. Ich verwende den NewZap V3.18 von der Fish-Disk 164. Auf der Franz 004 ist auch einer. Starten Sie den Monitor, geben Sie oben den Pfad mit dem Namen der GFABASIC-Datei ein. Zum Beispiel: df1:vk_prt_3/vk_prt.gfa MEHR SPEICHER ============= Für mehr Speicher gehen Sie nach Sektor 7. VK_PRT.GFA - Cursor pos 06A und 06B - der ASCII-Cursor steht unter Ä und n von Änderung. Ab 06A steht der Wert, der mit 1024 multipliziert den Gesamtspeicher ergibt. Dort steht der Wert 015E in Hex, 350 Dezimal. VK_PAR.GFA - Cursor pos 096 und 097 - der ASCII-Cursor steht unter Ä und n von Änderung. Klicken Sie auf den Schalter "GOTO" und geben Sie als Sektor 7 ein. Klicken Sie mit dem Mauszeiger in das linke Fenster für Hex-Edit. Mit den Cursor-Tasten verschieben Sie Sie den Cursor, bis zur Cursor pos siehe oben, der ASCII-Cursor steht unter dem Ä von Änderung. Ändern Sie nun die Werte, indem Sie neue Hex-Werte eintippen, zum Beispiel: Hex Dez ----------- $015E #350 (350 * 1024 Bytes = 358400 Bytes ) $0177 #375 $0190 #400 $01C2 #450 Klicken Sie auf "SAVE", um den geänderten Sektor auf Disk/Platte zu schreiben. MEHR DATENSÄTZE =============== Für mehr Datensätze gehen Sie nach Sektor 8. VK_PRT.GFA - Cursor pos 1C2 und 1C3 - der ASCII-Cursor steht unter dem l und 20 von MaxAnzahl Zeichen. Ab 12C steht der Wert für die Anzahl der Datensätze. Dort steht der Wert 0FA0 in Hex, 4000 Dezimal. VK_PAR.GFA - Cursor pos 1BA und 1BB - der ASCII-Cursor steht unter dem l und 20 von MaxAnzahl Zeichen. Tippen Sie nun die neuen Hex-Werte ein, zum Beispiel: Hex. Dez. ------------ $0FA0 #4000 Datensätze $0FD2 #4050 $1194 #4500 $1388 #5000 $1770 #6000 $1B58 #7000 $1F40 #8000 Nach dem Ändern auf "SAVE" klicken. Sie sollten diese Manipulationen nur bei einer Kopie machen. Das ganze funktioniert nur mit dem Originalpro- gramm. Wenn das Programm geändert wurde und das PRG dadrch kürzer oder länger geworden ist, dann verschieben sich alle Adressen auf der Disk. Sie können auch einen anderen Monitor verwenden, orientieren Sie sich am ASCII-Text. Mehr Speicher: der erste Hex-Wert unter dem Ä von Änderung, der zweite unter dem n. Mehr Datensätze: der erste Hex-Wert unter dem l von MaxAnzahl Zeichen, der zweite unter der 20. Der Tip zum Tip: zuerst würde ich die Anzahl der Datensätze erhöhen, den Speicher ev. später. Etikett 70 x 70 und 89 x 36 =========================== Variokartei nimmt die Inhalte der ersten drei Felder fÜr den Etikettendruck. In der Feldvariablen a$(n) stehen die Daten von dem Datensatz, der auf dem Bildschirm angezeigt wird. a$(0) 'druckt erste Zeile a$(1) 'druckt zweite Zeile a$(2) 'druckt dritte Zeile Wenn Sie weitere Zeilen drucken möchten, zum Beispiel a$(3) und a$(4), müssen Sie in der Schleife den zweiten Wert um 2 verringern. Die Zeile am Ende der PROCEDURE Etikett89x36 FOR i|=1 TO 4 wird zu FOR i|=1 TO 2 Die Zeile am Ende der PROCEDURE Etikett70x70 FOR i|=1 to 9 wird zu FOR i|=1 TO 7 Aug. 1993 Lothar Berndt